; (async function () {
  // 如果一个模块,没有导出任何内容,只是要执行一下这个模块的代码.就可以引入,但不接收

  const uiRouter = require("./severModules/uiRouters");
  const logicRouter = require("./severModules/logicRouters");

  const express = require("express");

  // 下载后引入cookies
  var cookieParser = require("cookie-parser");

  // session加入的
  //服务器端开启session的工具
  const session = require("express-session");
  // 现在流行将原生存储在服务器的session信息,存储到服务器所对应的数据库
  const MongoStore = require("connect-mongo")(session);

  // 连接数据库
  const connectPromise = require("./db/db");

  await connectPromise;

  console.log("数据库连接成功");

  const app = express();

  // 使用express中的中间件
  app.use(express.urlencoded({ extended: false }));
  app.use(express.static("./web"));

  // 设置cookies为中间件
  app.use(cookieParser());
  //     5.编写session全局配置对象：
  app.use(
    session({
      name: "name", //设置cookie的name，默认值是：connect.sid
      secret: "atguigu", //参与加密的字符串（又称签名）
      saveUninitialized: false, //是否在存储内容之前创建会话
      resave: true, //是否在每次请求时，强制重新保存session，即使他们没有变化
      store: new MongoStore({
        url: "mongodb://localhost:27017/sessions_container",
        touchAfter: 1000*60*60*10, //修改频率（例：//在1小时之内只更新一次）
      }),
      cookie: {
        httpOnly: true, // 开启后前端无法通过 JS 操作cookie
        maxAge: 1000*60*10, // 设置cookie的过期时间
      },
    })
  );

  app.use(logicRouter);
  app.use(uiRouter);

  app.listen(666, (err) => {
    if (err) console.log("服务器启动失败", err);
    else console.log("服务器启动成功");
  });
})();